module dgl.input.MouseState;

enum ButtonState
{
	Released,
	Pressed
}

struct MouseState
{
	package int m_x;
	
	package int m_y;
	
	package ButtonState m_leftButton;
	
	package ButtonState m_rightButton;
	
	package ButtonState m_middleButton;
	
	package int m_wheel;
	
	static MouseState opCall( int x, 
	                          int y, 
	                          ButtonState leftButton, 
	                          ButtonState middleButton, 
	                          ButtonState rightButton,
	                          int wheel )
	{
		MouseState ret;
		ret.m_x = x;
		ret.m_y = y;
		ret.m_leftButton = leftButton;
		ret.m_rightButton = rightButton;
		ret.m_middleButton = middleButton;
		ret.m_wheel = wheel;
		return ret;
	}
	
	public int x()
	{
		return m_x;
	}
	
	public int y()
	{
		return m_y;
	}
	
	public ButtonState leftButton()
	{
		return m_leftButton;
	}
	
	public ButtonState rightButton()
	{
		return m_rightButton;
	}
	
	public ButtonState middleButton()
	{
		return m_middleButton;
	}
	
	public int scrollWheelValue()
	{
		return m_wheel;
	}
}